package myCalculator;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author houfukude
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.net.*;
import java.io.IOException;
import java.awt.Desktop;

public class MyCalculator implements ItemListener,ActionListener {
    JFrame frame = new JFrame("简易计算器"); //初始化框架
    JMenuBar jmb1;                          //menubar
    JMenu jm1;
    JMenuItem jmi1;
    JTextField tf1 = new JTextField("by 彭福德",20);
    JTextField tf2 = new JTextField("初始化完成！",20);
    JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bAdd,bSub,bMul,bDiv,bEnter,bPoint,bCancel,bRes,bX;
    //b1~b0是数字按钮 其余的是功能按钮
    int tag1,tag2,tag3,c = 0;
    //tag1是数字是否是第一个输入的判断标签；tag2是功能按钮是否按下的判断标签
    //tag3是输入运算符号的判断  c是颜色的获得。。。
    double   d1,d2,ans;//d1 d2用于保存普通计算输入的数字的值；ans是运算结果
    int Date1,Date2; // 用于保存输入时间与现在的差值
    boolean isArithmetic = true,isDiv,isEntered,isDay = true;//是否算数计算、是否日期输入完成 和是否稀疏多项式
    public static void main(String args[]){
        MyCalculator c1 = new MyCalculator();
        try{
            c1.go2();//创建menubar和上面的功能选项
            c1.go1();//生成按钮矩阵。。
        }
        catch (Exception e) {

        }
        
    }

    static double convert(double   value){
        // 进行四舍五入  防止生成4.9999这类的double数
        long l1 = Math.round(value*100);
        double ret = l1/100.0; 
        return ret;
    }

    public void go1(){//生成按钮矩阵。。
        tag1 = 1;tag2 = 1;//标签初始化
        b7 = new JButton("7");//添加一个新按钮
        b7.setMnemonic(KeyEvent.VK_NUMPAD7);//注册按钮的快捷键
        b7.addActionListener(this);//监听这个按钮
        b8 = new JButton("8");
        b8.setMnemonic(KeyEvent.VK_NUMPAD8);
        b8.addActionListener(this);
        b9 = new JButton("9");
        b9.setMnemonic(KeyEvent.VK_NUMPAD9);
        b9.addActionListener(this);
        b4 = new JButton("4");
        b4.setMnemonic(KeyEvent.VK_NUMPAD4);
        b4.addActionListener(this);
        b5 = new JButton("5");
        b5.setMnemonic(KeyEvent.VK_NUMPAD5);
        b5.addActionListener(this);
        b6 = new JButton("6");
        b6.setMnemonic(KeyEvent.VK_NUMPAD6);
        b6.addActionListener(this);
        b1 = new JButton("1");
        b1.setMnemonic(KeyEvent.VK_NUMPAD1);
        b1.addActionListener(this);
        b2 = new JButton("2");
        b2.setMnemonic(KeyEvent.VK_NUMPAD2);
        b2.addActionListener(this);
        b3 = new JButton("3");
        b3.setMnemonic(KeyEvent.VK_NUMPAD3);
        b3.addActionListener(this);
        b0 = new JButton("0");
        b0.setMnemonic(KeyEvent.VK_NUMPAD0);
        b0.addActionListener(this);
        bPoint = new JButton(".");
        bPoint.setMnemonic(KeyEvent.VK_DELETE);
        bPoint.addActionListener(this);
        bEnter = new JButton("Enter");
        bEnter.setMnemonic(KeyEvent.VK_ENTER);
        bEnter.addActionListener(this);
        bAdd = new JButton("+");
        bAdd.setMnemonic(KeyEvent.VK_ADD);
        bAdd.addActionListener(this);
        bSub = new JButton("-");
        bSub.setMnemonic(KeyEvent.VK_SUBTRACT);
        bSub.addActionListener(this);
        bMul = new JButton("*");
        bMul.setMnemonic(KeyEvent.VK_MULTIPLY);
        bMul.addActionListener(this);
        bDiv = new JButton("/");
        bDiv.setMnemonic(KeyEvent.VK_DIVIDE);
        bDiv.addActionListener(this);
        bCancel = new JButton("C");
        bCancel.setMnemonic(KeyEvent.VK_BACK_SPACE);
        bCancel.addActionListener(this);
        bRes = new JButton("%");
        bRes.setMnemonic(KeyEvent.VK_R);
        bRes.addActionListener(this);
        bX = new JButton("X");
        bX.setMnemonic(KeyEvent.VK_X);
        bX.addActionListener(this);

        //button
        JPanel numPane = new JPanel();//新建一个面板
        numPane.setLayout(new GridLayout(5,4));//使用5*4的网格布局
        numPane.add(b7);//添加按钮到面板 下同
        numPane.add(b8);
        numPane.add(b9);
        numPane.add(bAdd);
        numPane.add(b4);
        numPane.add(b5);
        numPane.add(b6);
        numPane.add(bSub);
        numPane.add(b1);
        numPane.add(b2);
        numPane.add(b3);
        numPane.add(bMul);
        numPane.add(b0);
        numPane.add(bPoint);
        numPane.add(bEnter);
        numPane.add(bDiv);
        numPane.add(bRes);
        numPane.add(bX);
        numPane.add(bCancel);
        
        Container allCP = frame.getContentPane();//实例化一个容器
        allCP.setLayout (new FlowLayout());//使用流布局管理
        
        tf1.setHorizontalAlignment (JTextField.RIGHT);//设置从右到左现实 下同
        tf1.setEditable(false);//设置不可编辑 下同
        tf2.setHorizontalAlignment (JTextField.RIGHT);
        tf2.setEditable(false);
        allCP.add(tf2);//把textfield添加到容器
        allCP.add(tf1);
        allCP.add(numPane);//把上面做好的面板添加到容器
        


        frame.setResizable(false);//设置框架不可变化
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置框架关闭的时候退出
        frame.setSize(300, 265);//设置大小
        frame.setVisible(true);//设置可见
        System.out.println("OK");

    }

    public void go2() throws Exception{//创建menubar和上面的功能选项
        //menubar
        JMenuBar jmb = new JMenuBar();//新建一个menubar
        frame.setJMenuBar(jmb);//把menubar添加到容器

        //
        jm1 = new JMenu("");
        jmb.add(jm1);
        //file
        jm1 = new JMenu("文件(F1)");//新建立菜单
        jm1.setMnemonic(KeyEvent.VK_F1);//注册快捷键
        jmb.add(jm1);//添加到menubar  下同
        //file menu
        jmi1 = new JMenuItem("开始(S)");//菜单选项
        jmi1.setMnemonic(KeyEvent.VK_S);//注册快捷键
        jmi1.setActionCommand("Start");//注册内部的命令
        jmi1.addActionListener(this);//监听
        jm1.add(jmi1);//添加

        jmi1 = new JMenuItem("取消(C)");
        jmi1.setMnemonic(KeyEvent.VK_C);
        jmi1.setActionCommand("Cancel");
        jmi1.addActionListener(this);
        jm1.add(jmi1);

        jm1.add(new JSeparator());

        jmi1 = new JMenuItem("退出(E)");
        jmi1.setMnemonic(KeyEvent.VK_E);
        jmi1.setActionCommand("Exit");
        jmi1.addActionListener(this);
        jm1.add(jmi1);

        //Option
        jm1 = new JMenu("选项(O)");
        jm1.setMnemonic(KeyEvent.VK_O);
        jmb.add(jm1);
        //color menu
        jmi1 = new JMenuItem("改变颜色");
        jmi1.setActionCommand("Color");
        jmi1.addActionListener(this);
        jm1.add(jmi1);
        //切换到日期计算
        jmi1 = new JMenuItem("日期计算");
        jmi1.setActionCommand("date");
        jmi1.addActionListener(this);
        jm1.add(jmi1);
        jmi1 = new JMenuItem("普通计算");
        jmi1.setActionCommand("number");
        jmi1.addActionListener(this);
        jm1.add(jmi1);
        jmi1 = new JMenuItem("稀疏多项式");
        jmi1.setActionCommand("poly");
        jmi1.addActionListener(this);
        jm1.add(jmi1);


        //Help
        jm1 = new JMenu("帮助");
        jm1.setMnemonic(KeyEvent.VK_H);
        jmb.add(jm1);
        //option menu
        jmi1 = new JMenuItem("在网页寻求帮助");
        jmi1.setActionCommand("Help");
        jmi1.addActionListener(this);
        jm1.add(jmi1);

        //about
        jm1 = new JMenu("关于");
        jm1.setMnemonic(KeyEvent.VK_A);
        jmb.add(jm1);
        //option menu
        jmi1 = new JMenuItem("关于程序");
        jmi1.setActionCommand("About");
        jmi1.addActionListener(this);
        jm1.add(jmi1);
        jmi1 = new JMenuItem("作者");
        jmi1.setActionCommand("AboutMe");
        jmi1.addActionListener(this);
        jm1.add(jmi1);

    }

    protected int paintTextField(int color){//设置tf1，2的颜色
        color ++;//每次改变颜色
        switch(color){
            case 1:{
                tf1.setBackground(Color.red);
                tf2.setBackground(Color.red);
            }break;
            case 2:{
                tf1.setBackground(Color.orange);
                tf2.setBackground(Color.orange);
            }break;
            case 3:{
                tf1.setBackground(Color.yellow);
                tf2.setBackground(Color.yellow);
            }break;
            case 4:{
                tf1.setBackground(Color.green);
                tf2.setBackground(Color.green);
            }break;
            case 5:{
                tf1.setBackground(Color.PINK);
                tf2.setBackground(Color.PINK);
            }break;
            case 6:{
                tf1.setBackground(Color.LIGHT_GRAY);
                tf2.setBackground(Color.LIGHT_GRAY);
            }break;
            case 7:{
                tf1.setBackground(Color.gray);
                tf2.setBackground(Color.gray);
            }break;
            default :{
                tf1.setBackground(Color.white);
                tf2.setBackground(Color.white);
                color =0;//下次回到case1
            }
            
        }
        return color;//返回颜色参数 下次继续调用

        }



    public void actionPerformed(ActionEvent e){

        //获得按钮的点击监听结果

        try{
            JButton button = (JButton)e.getSource();
            //监听信息
            calculatorNumButton(button);//与数字面板进行匹配
            
        }catch(Exception ex){
            CalculatorItem(e);//与菜单栏进行匹配
        }
        
    }


    void calculatorNumButton(JButton button){
        if(isArithmetic){//判断是否是普通运算还是日期计算
                calculatorNumOperation(button);//普通计算
            }else if(isDay){
                calculatorDateOperation(button);//日期计算
                
            }else{
            calculatorPolyOperation(button);//稀疏多项式计算
            }
        if(button == b7){//获得的按钮匹配了
            if(tag1 != 0){//是否是第一次点击数字
                tf1.setText("7");//清空以前信息 以及输入按钮信息
            }
            else{
            tf1.setText(tf1.getText() + "7");//不清空 继续添加信息
            }
            tag1 = 0;//标记  表示已经进行一个位数的输入了
            isDiv = true;//如果是日期输入 表示可以进行输入分隔符“/”
        }
        //一下的注释与上相同 忽略
        if(button == b8){
            if(tag1 != 0){
                tf1.setText("8");
            }
            else{
            tf1.setText(tf1.getText() + "8");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b9){
            if(tag1 != 0){
                tf1.setText("9");
            }
            else{
            tf1.setText(tf1.getText() + "9");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b4){
            if(tag1 != 0){
                tf1.setText("4");
            }
            else{
            tf1.setText(tf1.getText() + "4");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b5){
            if(tag1 != 0){
                tf1.setText("5");
            }
            else{
            tf1.setText(tf1.getText() + "5");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b6){
            if(tag1 != 0){
                tf1.setText("6");
            }
            else{
            tf1.setText(tf1.getText() + "6");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b1){
            if(tag1 != 0){
                tf1.setText("1");
            }
            else{
            tf1.setText(tf1.getText() + "1");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b2){
            if(tag1 != 0){
                tf1.setText("2");
            }
            else{
            tf1.setText(tf1.getText() + "2");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b3){
            if(tag1 != 0){
                tf1.setText("3");
            }
            else{
            tf1.setText(tf1.getText() + "3");
            }
            tag1 = 0;isDiv = true;
        }
        if(button == b0){
            if(tag1 != 0 ){
                tf1.setText("0");
            }
            else{
            tf1.setText(tf1.getText() + "0");
            }
            tag1 = 0;isDiv = true;
        }
        
        

    }
    void calculatorNumOperation(JButton button){
        //进行普通计算
        if(button == bCancel){//清除当次输入
            d2 = 0;            
            tag1 = 0;tag2 = 1;
            tf2.setText(""+d1);
            tf1.setText("0");
        }
         if(button == bPoint){
            if(tag2 == 1){//判断是否连续两次点击小数点
            tf1.setText(tf1.getText() + ".");
            tag2 = 0;
            }
            else{
                tf1.setText("");
                JOptionPane.showMessageDialog(frame,
                        "不能同时点击两次小数点！请重新输入！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag2 = 1;

            }
        }
        if(button == bAdd){
            if(tag1 != 0){//判断是否是表示正数
                tf1.setText("+");
                tag1 = 0;
            }
            else{d1 = Double.valueOf(tf1.getText()).doubleValue();
            tag3 = 1;tag1 = 1;tag2 = 1;
            tf2.setText(tf1.getText());
            tf1.setText("+");
            }
        }
        if(button == bSub){
            if(tag1 != 0){//判断是否是表示负数
                tf1.setText("-");
                tag1 = 0;
            }
            else{
                d1 = Double.valueOf(tf1.getText()).doubleValue();
                tag3 = 2;tag1 = 1;tag2 = 1;
                tf2.setText(tf1.getText());
                tf1.setText("-");
            }
        }
        if(button == bMul){
            if(tag1 != 0){//判断是否直接输入运算符号
                JOptionPane.showMessageDialog(frame,
                        "你的输入有误！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag1 = 1;
                tf1.setText("");
            }
            else{
                d1 = Double.valueOf(tf1.getText()).doubleValue();
                tag3 = 3;tag1 = 1;tag2 = 1;
                tf2.setText(tf1.getText());
                tf1.setText("*");
            }
        }
        if(button == bDiv){
            if(tag1 != 0){
                JOptionPane.showMessageDialog(frame,
                        "你的输入有误！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag1 = 1;
                tf1.setText("");
            }
            else{
                d1 = Double.valueOf(tf1.getText()).doubleValue();
                tag3 = 4;tag1 = 1;tag2 = 1;
                tf2.setText(tf1.getText());
                tf1.setText("/");
            }
        }
        if(button == bRes){
            if(tag1 != 0){
                JOptionPane.showMessageDialog(frame,
                        "你的输入有误！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag1 = 1;
                tf1.setText("");
            }
            else{
                d1 = Double.valueOf(tf1.getText()).doubleValue();
                tag3 = 5;tag1 = 1;tag2 = 1;
                tf2.setText(tf1.getText());
                tf1.setText("%");
            }
        }

        if(button == bEnter){
            if(tag1 != 0){//判断是否直接输入符号
                JOptionPane.showMessageDialog(frame,
                        "你的输入有误！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag3 = 0;tag1 = 1;
                tf1.setText("");
            }
            else{
                //获得第一个输入数
                d2 = Double.valueOf(tf1.getText()).doubleValue();
                tag2 = 1;
            }
            System.out.println(d1 +"and"+ d2);


            switch(tag3){//判断是否进行了符号输入 并且判断是什么符号
                case 1 : {
                    ans = d1 + d2;
                    tf2.setText(d1 + "+" + d2 + "=");
                }break;
                case 2 : {
                    ans = d1 - d2;
                    tf2.setText(d1 +"-"+ d2 + "=");
                }break;
                case 3 : {
                    ans = d1 * d2;
                    tf2.setText(d1 +"*"+ d2 + "=");
                }break;
                case 4 : {
                    if(d2==0){
                        tf2.setText("ERROR");
                    }
                    else{
                        ans = d1 / d2;
                        tf2.setText(d1 +"/"+ d2 + "=");
                    }

                }break;
                case 5: {
                    if(d2==0){
                        tf2.setText("ERROR");
                    }
                    else{
                        ans = d1 % d2;
                        tf2.setText(d1 +"%"+ d2 + "=");
                    }

                }break;
                default : {
                        JOptionPane.showMessageDialog(frame,
                        "你的输入有误！",
                        "输入错误",
                        JOptionPane.ERROR_MESSAGE);
                tag3 = 0;
                }

            }
            ans = convert(ans);
            tf1.setText(String.valueOf(ans));
            tag1 = 1;
        }



    }
    void calculatorDateOperation(JButton button){
        //Day tempDay = new Day();
        //进行日期计算 只需要注册 c / enter三个键
        if(button == bCancel){//删除当次输入的日期
            if(isEntered){//第一个日期输入后删除第二个日期
                tf1.setText(" 日期2归零");
                tag2 = 3;tag1 = 1;
                isArithmetic = false;
                isEntered = true;
            }else{//第一个日期输入出错 删除
                tf1.setText(" 日期归零");
                tf2.setText("开始日期计算");
                 tag1 = 1;tag2 = 3;tag3 = 0;
                isArithmetic = false;
                 isEntered = false;
            }
        }
        if(button == bDiv){
            if(tag2>1&&isDiv){//判断输入的是第几个分隔符
            tf1.setText(tf1.getText() + "/");
            --tag2;
            isDiv = false;
            }else{
                if(isEntered){//第一个日期输入后删除第二个日期
                    tf1.setText(" 日期2输入错误");
                    tag2 = 3;tag1 = 1;
                    isArithmetic = false;
                    isEntered = true;
                }else{//第一个日期输入出错 删除
                    tf1.setText(" 日期1输入错误");
                    tf2.setText("重新开始日期计算");
                    tag1 = 1;tag2 = 3;tag3 = 0;
                    isArithmetic = false;
                    isEntered = false;
                }
            }
            
        }
        
        if(button == bEnter){//确定日期输入成功
            Day day = new Day();//新建一个day类
                String[] m=tf1.getText().split("/");
                //用分隔符分离数字提取 年 月 日
                int year = Integer.valueOf(m[0]).intValue();
                int month = Integer.valueOf(m[1]).intValue();
                int date = Integer.valueOf(m[2]).intValue();
                //判断输入的年份是否正确
                if(year>0&&month<13&&month>0&&date>0&&date<32){
                    //对day类进行一一赋值
                    day.year = year;
                    day.month = month;
                    day.date = date;
                    //把获得的距离转化成String
                    String Date = String.valueOf(day.DayBettwenNow());
                    if(isEntered){//是否是第二次点击
                       Date2 = Math.abs(Integer.valueOf(Date).intValue()-Date1);
                       tf2.setText(tf2.getText()+"与"+tf1.getText());
                       tf1.setText("相差"+Date2+"天");
                       isEntered = false;//标记 可以进行下次计算了
                       tag2 = 3;tag1 = 1;
                    }else{//第一次点击 获得第一个日期数据
                       tf2.setText(tf1.getText());//获得数据
                       Date1 = Integer.valueOf(Date).intValue();//转化成整形
                       isEntered = true;//标记 已经点击一次了
                       tf1.setText("距离今天"+Date+"天");
                       tag2 = 3;tag1 = 1;//标记 可以继续进行输入第二个数据了
                    }
                    
                }
                else{
                    if(isEntered){//第一个日期输入后删除第二个日期
                        tf1.setText(" 日期2输入错误");
                        tag2 = 3;tag1 = 1;
                        isArithmetic = false;
                        isEntered = true;
                    }else{//第一个日期输入出错 删除
                        tf1.setText(" 日期1输入错误");
                        tf2.setText("重新开始日期计算");
                        tag1 = 1;tag2 = 3;tag3 = 0;
                        isArithmetic = false;
                        isEntered = false;
                    }
                    
                }
                
            
        }
        
    }

    void calculatorPolyOperation(JButton button){

        
        if(button == bX){
            
            tf1.setText(tf1.getText() + "X^");

            /*if(tag2>0&&isDiv){//判断输入的是第几个分隔符
            tf1.setText(tf1.getText() + "X^");
            --tag2;
            isDiv = false;
            }else{
                if(isEntered){//第一个输入正确后删除第二个
                    tf1.setText(" 多项式2输入错误");
                    tag2 = 3;tag1 = 1;
                    isArithmetic = false;
                    isEntered = true;
                }else{//第一个多项式输入出错 删除
                    tf1.setText(" 多项式1输入错误");
                    tf2.setText("重新开始日期计算");
                    tag1 = 1;tag2 = 3;tag3 = 0;
                    isArithmetic = false;
                    isEntered = false;
                }
            }
             *
             */
        }
        if(button == bAdd){

            tf2.setText(tf2.getText()+tf1.getText()+"+");
            tf1.setText("");
            if(tag1 != 0){//判断是否是表示正数
                tf1.setText("+");
                //tag1 = 0;
            }
            else{
                //d1 = Double.valueOf(tf1.getText()).doubleValue();
            //tag1 = 0;//1;//tag3 = 1;//tag2 = 1;
            
            }

        }
        if(button == bSub){
            tf2.setText(tf2.getText()+tf1.getText()+"-");
            tf1.setText("");
            if(tag1 != 0){//判断是否是表示负数
                tf1.setText("-");
                //tag1 = 0;
            }
            else{
                //d1 = Double.valueOf(tf2.getText()+tf1.getText()).doubleValue();
                //tag3 = 2;tag1 = 1;tag2 = 1;
                
            }
        }
        if(button == bEnter){
            //String s1 = tf2.getText().toString();
            //String[] ss = s1.split("+");
        }
        if(button == bCancel){//删除当次输入的日期
            if(isEntered){//第一个日期输入后删除第二个日期
                tf1.setText(" 日期2归零");
                tag2 = 3;tag1 = 1;
                isArithmetic = false;
                isEntered = true;
            }else{//第一个日期输入出错 删除
                tf1.setText(" 日期归零");
                tf2.setText("开始日期计算");
                 tag1 = 1;tag2 = 3;tag3 = 0;
                isArithmetic = false;
                 isEntered = false;
            }
        }
    }

    void CalculatorItem(ActionEvent e){
        //所有的注册了的菜单栏事件
        if(e.getActionCommand().equals("Start")){//开始菜单被选择
            d1 = 0;d2 = 0;//对普通计算进行初始化
            tf1.setText(" 重新开始普通计算");
            tf2.setText("初始化已完成！");
            tag1 = 1;tag2 = 1;tag3 = 0;
        }
        if(e.getActionCommand().equals("Cancel")){
            if(isArithmetic){//判断是否是日期计算 还是普通计算
                d2 = 0;
                tf1.setText(" 归零");
                tf2.setText(""+d1);
                tag1 = 1;tag2 = 1;tag3 = 0;
            }else{
                Date2 =0;
                tf1.setText(" 归零");
                tf2.setText(""+Date1);
                tag1 = 1;tag2 = 3;tag3 = 0;
            }
            

        }
        if(e.getActionCommand().equals("Help")){
            try{
                SeeHelp();//打开帮助网站
            }catch(URISyntaxException e2){

            }catch(IOException e3){

            }
            
        }
        if(e.getActionCommand().equals("Color")){
           c = paintTextField(c);//进入颜色选择功能
        }
        if(e.getActionCommand().equals("date")){
           calculatorDate();//切换日期计算
        }
        if(e.getActionCommand().equals("number")){
           calculatorNum();//切换到普通计算
        }
        if(e.getActionCommand().equals("poly")){
           calculatorpoly();//切换到普通计算
        }
        if(e.getActionCommand().equals("About")){
            //关于程序
            ImageIcon img = new ImageIcon("favicon.ico");//设置调用的文件路径
            //定义
            JLabel tuxiang=new JLabel(img);//把图片添加到标签中

            JOptionPane.showMessageDialog(frame,
                        "简易计算器by Huofukude\n"+
                        "版本 1.6 (264)\n"
                        +"Copyright © 1995-2009 KuageD Inc.\n"
                        +"保留一切权利。",
                        "简易计算器",
                        JOptionPane.INFORMATION_MESSAGE,img);
        }
        if(e.getActionCommand().equals("AboutMe")){
            //关于作者
            JOptionPane.showMessageDialog(frame,
                        "Huofukude on Mac os X 10.6\n"+
                        "Email:KuageDMAC@GMAIL.COM\n"
                        +"Copyright © 1995-2009 KuageD Inc.\n"
                        +"保留一切权利。",
                        "简易计算器",
                        JOptionPane.PLAIN_MESSAGE);

        }
        if(e.getActionCommand().equals("Exit")){

            System.exit(0);//退出程序
        }
        
    }


    public static void SeeHelp()throws IOException,URISyntaxException{
        Desktop dt;//调用桌面信息
        if(Desktop.isDesktopSupported()){
                dt = Desktop.getDesktop();//访问网页
                dt.browse(new URI("http://onlyboke.tk/2010/11/cal-java.html"));
            }
    }
    
    public void itemStateChanged(ItemEvent e){

        
    }

    private void calculatorDate() {//进行日期计算的初始化
        tf1.setText(" 日期归零");
        tf2.setText("开始日期计算");
        tag1 = 1;tag2 = 3;tag3 = 0;
        isArithmetic = false;
        isEntered = false;
    }

    private void calculatorNum() {//进行普通计算的初始化
        d1=0;
        d2 = 0;
        tf1.setText(" 归零");
        tf2.setText("开始普通计算");
        tag1 = 1;tag2 = 3;tag3 = 0;
        isArithmetic = true;
        
        //throw new UnsupportedOperationException("Not yet implemented");
    }

    private void calculatorpoly() {
        tf1.setText("开始稀疏多项式计算 归零");
        tf2.setText("");
        tag1 = 1;tag2 = 3;tag3 = 0;
        isArithmetic = false;
        isEntered = false;
        isDay = false;
        //throw new UnsupportedOperationException("Not yet implemented");
    }

}
